home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_00 / powdemo6.bas < prev    next >
BASIC Source File  |  1995-01-01  |  2KB  |  69 lines

  1. $link "pow.pbl"
  2. $include "pow.inc"
  3.  
  4. 'POW! Demo #6 - This demonstrates DMA (background) sound sampling
  5. 'and playback routines.
  6.  
  7. q%=pbvhost
  8. shift right q%,5
  9. if q% and 1 then
  10.     print:print "Please run from a standalone .EXE only."
  11.      end
  12. end if
  13.  
  14.  
  15. if sbdetect=0 then
  16.     print "Soundblaster required!":end
  17. end if
  18.  
  19.  
  20. 'This first section demonstrates how to read the BLASTER environment
  21. 'variable set by the user in AUTOEXEC.BAT when he/she first installed
  22. 'their Soundblaster card.  This is then used to set POW! library
  23. 'defaults.
  24.  
  25. e$=environ$("BLASTER")
  26.  
  27. if e$<>"" then
  28.     bp%=instr(e$,"A")  'Base port
  29.     if bp%<>0 then
  30.          bp$="&h"+mid$(e$,bp%+1,3)
  31.           sbsetbase val(bp$)
  32.      end if
  33.      i%=instr(e$,"I")   'Interrupt number
  34.      if i%<>0 then
  35.          i$=mid$(e$,i%+1,1)
  36.           sbsetint val(i$)
  37.      end if
  38.      d%=instr(e$,"D")   'DMA number
  39.      if d%<>0 then
  40.          d$=mid$(e$,d%+1,1)
  41.           sbsetdma val(d$)
  42.      end if
  43. end if
  44.  
  45. cls
  46. print:print "POW! Demo #6 - Background Sampling and Playback"
  47. print:print "Speak into the microphone of your Soundblaster or"
  48. print "begin input to the Line In jack and...":print
  49. print "Press a Key to Begin Sampling..."
  50. sleep:a$=inkey$
  51. sbreset 'Reset the SB's DAC
  52. redim holdsample%(1:8192)  'We'll take a 16K sample at 6000 Hz.
  53. sbarrayrecord 16384,6000,holdsample%(1) 'This happens in the background, so...
  54. while sbcheckdma=0:wend   'Wait til it's done.
  55. print:print "Done sampling... Press a key to play it back!"
  56. while inkey$<>"":wend  'Clear keyboard buffer
  57. sleep:a$=inkey$
  58. sbarrayplay 16384,6000,holdsample%(1)
  59. print
  60. print "Playing and Saving as SAMPLE.VOC... ";  'Note that the save
  61.                                                'happens DURING the playback
  62. sbarraysave "sample.voc",16384,6000,holdsample%(1)
  63. while sbcheckdma=0:wend  'Wait til playback is done
  64. print "Done."
  65.  
  66. 'Now go on to POWDEMO7 and we'll load and use SAMPLE.VOC!
  67. 'Feel free to re-run and re-record if desired.  Old file will
  68. 'be overwritten by SBARRAYSAVE.
  69.